<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test.js"></script>
<script>
description("Tests to ensure that attributes are not set when an exceptions is raised while converting argument to JSValue.");
window.jsTestIsAsync = true;
function setName(select) {
    var stringLike = {
        toString: function() {
            throw new Error("error");
        }
    };
    select.name = stringLike;
}

function setSelectedIndex(select) {
    var integerLike = {
        valueOf: function() {
            throw new Error("error");
        }
    };
    select.selectedIndex = integerLike;
}

function runTest() {
    shouldThrow('setName(select)');
    shouldBe('select.name', '"select"');

    shouldThrow('setSelectedIndex(select)');
    shouldBe('select.selectedIndex', '1');
    finishJSTest();
}
</script>
</head>
<body onload="runTest()">
<select id="select" name="select">
 <option value="value1">Value 1</option>
 <option value="value2" selected>Value 2</option>
 <option value="value3">Value 3</option>
</select>
</body>
</html>
